package model.comunication;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;

import model.Clase2;
import model.dba.ClaseDAO;

public class IClase {
	private ClaseDAO claseDAO;
	private static IClase claseInterface;

	private IClase() {
		claseDAO = ClaseDAO.getInstance();
	}

	public static IClase getInstance() {
		if (claseInterface == null) {
			claseInterface = new IClase();
		}
		return claseInterface;
	}

	/**
	 * Crea el objeto
	 * 
	 * @param id
	 * @param nombre
	 * @return
	 */
	public Clase2 getClase(Integer idCursada, Calendar fecha) {
		return new Clase2(idCursada, fecha);
	}

	/**
	 * Crea el objeto
	 * 
	 * @param nombre
	 * @return
	 */
	// public IRHorarioInstructor getIRHorarioInstructor(Integer idCursada, String dniInstructor) {
	// return new IRHorarioInstructor(idCursada,dniInstructor);
	// }

	/**
	 * Va contra la base de datos y obtiene el objeto
	 * 
	 * @param id
	 * @return
	 */
	// TODO areglar para busacar para que te de un objeto
	public List<Clase2> findAll(Integer idCursadaC) {
		return this.claseDAO.findAll(idCursadaC);
	}

	/**
	 * Va contra la base de datos y obtiene el objeto
	 * 
	 * @param id
	 * @return
	 */
	// En un futuro se puede poner nombre(primero agragar a la DAO
	public Clase2 findClase(Integer idCursada) {
		return this.claseDAO.find(idCursada);
	}

	/**
	 * Va contra la base de datos y obtiene el objeto
	 * 
	 * @param id
	 * @return
	 */
	public Clase2 getClase(Integer id) {
		return this.claseDAO.get(id);
	}

	/**
	 * Va contra la base de datos y obtiene el objeto
	 * 
	 * @return
	 */
	public List<Clase2> getAllClase2() {
		return this.claseDAO.getAll();
	}

	/**
	 * Va contra la base de datos y obtiene el objeto
	 * 
	 * @param ids
	 * @return
	 */
	public List<Clase2> getSelectedClase(Integer... ids) {// VER por exception
		List<Clase2> idList = new ArrayList<Clase2>();

		for (Integer id : ids) {
			idList.add(this.claseDAO.get(id));
		}
		return idList;
	}

	/**
	 * Va contra la base de datos y obtiene el objeto
	 * 
	 * @param Sala
	 * @return
	 */
	public Integer addClase(Clase2 iRHorarioCursada) {
		return this.claseDAO.add(iRHorarioCursada);
	}

	/**
	 * Va contra la base de datos y obtiene el objeto
	 * 
	 * @param id
	 * @return
	 */
	public boolean deleteClase(Integer id) {
		return this.claseDAO.delete(id);
	}

	/**
	 * Va contra la base de datos y obtiene el objeto
	 * 
	 * @param Sala
	 * @return
	 */
	// En un futuro se puede poner nombre(primero agragar a la DAO
	// public boolean updateIRCursadaInstructor(IRCursadaInstructor sala) {
	// return this.salaDAO.update(sala);
	// }

}
